const { MayBe, Container } = require("./support")
//使用fp.add(x,y)和fp.map(f,x)创建一个能让functor里的值增加的函数ex1
const fp = require('lodash/fp')
const { parseInt } = require("lodash")
// const { parseInt } = require("lodash")

// let maybe = MayBe.of([5,6,1])
// let ex1 = (num) =>{
//     // [1,2,3]
//     let fn = fp.flowRight(fp.map(fp.add(num)))
//     let a = maybe.map(fn)
//     return a
// }
// console.log(ex1(3))

// let xs = Container.of(['do','ray','me','fa','so','la','ti','do'])
// //实现一个函数ex2，能够使用fp.first获取列表的第一个元素
// let ex2 = () => {
//     return xs.map(fp.first)._value
// }

// console.log(ex2())

// 实现一个函数ex3，使用safeProp和fp.first找到user的名字的首字母
// let safeProp = fp.curry(function (x, o) {
//     return MayBe.of(o[x])
// })

// let user = { id: 2, name: 'Albert' }
// let ex3 = () => {
//     //你需要实现的函数
//     return safeProp('name',user).map(fp.first)._value
// }
// console.log(ex3())

// 使用MayBe重写ex4，不要有if语句
let  ex4 = function(n){
    let m1 = new MayBe(n)
    let m2 = m1.map(parseInt)
    return m2._value
}

console.log(ex4(12))
